An automobile includes a number of controllers. The controllers are programmed to perform a particular set of vehicle-related functions. For example, a controller may be programmed to manage door locks and windows. During the lifetime of the controller, that set of functions remains the same. A controller programmed to manage door locks and windows will perform those same functions over the life of the vehicle. Controllers are also designed to have some memory and processing reserve to ensure sufficient execution time and resources for all of the functions executed by the controller. In the event of a partial or complete controller failure, those functions implemented by that controller are lost. Existing systems are not tolerant to faults.